1. Field of the Invention
This invention relates generally to digital data processing systems and more specifically to a distributed print controller that transfers files between mainframe computer systems and personal computer systems and prints files on printers connected to a mainframe computer system or personal computer system by a computer network.
2. Background Information
Most digital computer systems include at least one printing system to produce printed records of data that have been generated by the computer system. A typical printing system contained in early computer architectures consisted of a single, stand-alone printer designed to sequentially accept printing requests from the computer system it is connected to, and to process these requests to produce a printed paper copy of the information generated by the computer system. The printer may have had a small memory to store the control information necessary to process the print requests. The typical system had a printer connected by a cable to an Input/Output (I/O) bus of the computer system. An application program executed on the computer system to produce an output file stored in the computer system's memory. This memory consisted of random-access-memory (RAM) or secondary mass storage devices such as magnetic disks. A computer operator inputted a command via the main console of the computer system to print the output file on the attached printer. The operating system of the computer system initiated the print requests to direct the printer to print the characters contained in the output file on paper. This scheme was very restrictive in that it was highly dependent on the speed of the printer and the overall processing load of the computer system, and only supported one type of print job at a time.
As computer systems grew larger, faster, and more complex, this "one computer to one printer" design quickly became obsolete. Instead, printing systems were developed to take advantage of increased processor speed and greater disk capacity of new computer systems. This next generation of printing systems used multiple printers connected to multiple print queues supported by the computer system. In this type of system, the application program generated an output file as before. However, the computer operator had several options on how to print the output file because of the presence of multiple printers and the print queues. In the memory of the computer system, one or more print queues were defined to represent not physical, but logical printers. In this computer system, the memory usually consisted of magnetic disks. A print queue is a list of print jobs with similar attributes to be printed on a particular physical printer. Print attributes may consist of physical printer identifier, print job priority, print disposition, and a print format number. By specifying this small set of print attributes, a computer operator or other user could control the printing of multiple jobs. In such a system, all printers were still connected directly to the computer system via cables. Because of the physical characteristics of the wire cables, the maximum distance that printers could be located from the computer system was about 250 feet. Thus, printers had to be located close to the computer system, and often were in the same room.
A significant limitation on the flexibility of using print queues is that the definition of a print queue is static. In order to install a new print queue or modify an existing print queue, a system administrator must take the computer system off-line, edit the operating system-resident printer configuration information, and possibly reboot the computer system. These steps could take from 15 minutes to one hour, which often is unacceptable in many system environments.
Both of the computer systems described above could be classified as "print then distribute" systems. The computer systems generally were large mainframe computers connected to multiple printers, all centrally located in a data processing center. The operation of the computer system and the attached printers was labor intensive. Computer operators had to input print commands, frequently change printer paper and forms, and monitor print operations. Once an output file was printed, the data processing center staff had to separate the printouts, identify the user or owner of the printouts, and physically distribute the paper output to the users. There often was a significant time delay from the time a user requested a file to be printed to the time the user received the output at his/her desk.
The model of multiple print queues feeding multiple hard-wired printers from a mainframe computer system no longer adequately matches current computer system architectures. In a modern client/server system of networked computers, there may be no central computer system that controls all printers in the network. Furthermore, different print jobs may be represented in different formats. As well as simple textual information, there now exists different printer control languages such as POSTSCRIPT and PCL. First come, first serve priorities may not be the most efficient use of a complex printer. Many printers can select paper trays or download fonts. Often there is a set-up time for any changes to a printer's configuration. To maximize throughput, the system may process similar print jobs in succession, rather than processing print jobs in the order they arrive. In sum, printing capabilities of computer systems have evolved considerably over the years. The evolution has been driven by the emergence of distributed network computing and compound documents. Business solutions often require global access to printed documents that contain text, images, and graphic information. Users now want computer systems to be able to print documents, produced from a variety of operating systems, from locations anywhere in a heterogeneous computer network. Instead of one printer connected directly to the computer system, printers are now locally and remotely connected to local area networks (LANs), personal computers (PCs), workstations, and terminals across different network protocols such as the standard Transmission Control Protocol/Internet Protocol (TCP/IP), DECNET (available from Digital Equipment Corporation), APPLETALK (available from Apple Computer, Inc.), and others.
To better serve users in a networked computer environment, new computer systems providing printing services could be "distribute then print" systems. That is, a user could be able to control the printing of a print job on any printer connected to the network. The print job could be distributed to a selected printer with the desired capabilities at a location near to the user and then printed. The availability of small, fast, remote printers provides the opportunity to lower distribution costs, decrease the cost per page of print output, and improve the distribution time of print jobs. Although such systems are data communications intensive, they can use existing printing hardware, provide support for the existing communications network environment, and allow remote operator control of print jobs. The decentralized nature of the distributed print controller model maximizes overall system efficiency for printing services.
There presently exist various solutions to the distributed printing problem. One approach is to transfer the output file from a mainframe computer system (also known as an enterprise server) to a PC over a network, store it on the PC, and then transfer it from the PC through a LAN to a printer, all by operator commands. However, the throughput for this method is too small and is limited by the main memory and disk size and processing speed of the PC. Additionally, the transfer from the mainframe to the PC and from the PC through the network to the printer consists of two manual steps that must be performed by the user.
Another approach is to use terminal emulation mode on a PC. Under this method, the output file is displayed on a computer terminal one page at a time. Each page is then dumped to an attached printer by manual or automated command. It is possible to bypass the screen display, but the overall operation is still too slow and undependable. Many times print data is duplicated and errors occur in the printed output. In addition, both of these approaches are point-to-point solutions. They do not support a switched or multi-point capability whereby print jobs can be distributed to many printers concurrently.
Several products exist which enable networks to route any document from any connected computer system to any printer. The Advanced Function Printing (AFP) system from International Business Machines (IBM), is the distributed printing component of IBM's Systems Application Architecture (SAA). It handles print resource management, control and production for documents produced by AFP-supporting applications and printing on AFP-compatible printers. Although AFP is a published standard, since the IBM system uses Intelligent Printer DataStream (IPDS), a proprietary page description language which is printer dependent, AFP is limited in its applicability to computer systems and printers produced by other vendors. More specifically, costly reprogramming of existing print formats is required in order to take advantage of the AFP system.
Novell, Inc. provides print distribution services in some of its networking products but these products do not provide users with sufficient control over printing and transferring files. Novell's systems require a user application program to compose the file to be printed in an selected Printer Description Language (PDL). Once the print file is composed, the file cannot then be printed on a printer that uses a different PDL. This severely limits the flexibility of Novell's systems in providing users control over where files may be printed.
Therefore, an improved distributed printing system is needed that provides users with greater flexibility and control in transferring and printing files within a distributed computer network consisting of many different computer systems and printers.